@Lemon
2年前 提问
1个回答

网站防盗链方式有哪些

在下炳尚
2年前

网站防盗链方式有以下这些:

  • 利用HTTP Referer字段:网站服务器通过判断浏览器请求内容的HTTP数据包头的Referer字段值,能够获得浏览器所处的页面地址,这样就能知道用户此时是在本网站的页面上,还是在其他不合法的页面上。

  • 利用登录验证信息:网站服务器会先判断此请求是否已经通过了身份验证(比如在asp.net里用session或form验证来记录登录状态),如果发现用户尚未登录则返回一个错误提示信息。

  • 使用cookie携带动态验证信息:服务器在处理资源请求时先判断请求中是否携带了正确的动态cookie,如果没有则返回错误提示信息。至于这个动态信息的产生方法有很多,只要服务器能逆向判断其合法性即可。

  • 使用POST下载:客户端浏览器请求资源都使用的是HTTP的GET方法,服务器使用POST方法向客户端返回数据。可以将下载链接换成一个表单和一个按钮,将待下载的文件的名称或ID放到表单的一个隐藏文本框里,当用户单击提交按钮时,服务器先判断请求是否为POST方式,如果是则读取目标资源的二进制数据并写入响应对象。

  • 使用图形验证码:就是需要用户输入图形验证码中的数字或者字母之类的,这个方法可以保证资源的使用者是“人”,而不是其他网站的服务器或下载工具。

  • 使用动态密钥:当用户单击一个资源链接时,服务器先计算一个临时的Key,然后记录这个Key以及它所对应的资源ID或文件名,再通过一定的算法或规则为资源生成一个新的URL,这个新URL里需要包含这个Key。当浏览器向服务器请求这个资源时,程序先检测URL里是否有合法的Key存在,如果存在则返回对应的资源数据。

  • 在内容中插入数据:这种方法是指在内容的某个地方插入一些随机的字节,比如mp3的tag区中,rar/zip的备注区中,这样整个文件的哈希值(即散列值、指纹值)就会发生改变,服务器在进行哈希校验时,等于同时做了合法性检查。

  • 打包下载:这个方法跟方法7类似,只是方法7是在原始文件里修改,而本方法是在原始文件基础上进一步封装,同样使得资源的哈希值改变。但是这种方法不适用于在线流媒体业务,只能用于下载业务。